﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WCFVeterinaria;

public partial class ConsultaMedica : System.Web.UI.Page
{
    ServiceVeterinaria vet = new ServiceVeterinaria();
    private string _formatoFechaHora = "dd/MM/yyyy h:mm:ss tt";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["username"] == null)
        {
            Response.Redirect("/Login.aspx");
        }

        if (!IsPostBack)
        {
            CargarCombos();
            if (Request["idCita"] != null)
            {
                ConsultarCita(int.Parse(Request["idCita"]));
            }
        }
    }


    private void ConsultarCita(int idCita)
    {
        WCFVeterinaria.ConsultaMedica consulta = new WCFVeterinaria.ConsultaMedica();
        consulta = vet.consultarConsultaMedica(idCita);
        IdConsultaHiddenField.Value = consulta.ConsultaID.ToString();
        AnimalDropDownList.SelectedValue = consulta.AnimalID.ToString();
        NombreMedicoDropDownList.SelectedValue = consulta.NroColegiado.ToString();
        FechaTextBox.Text = consulta.FechaHora.ToString("dd/MM/yyyy");
        HoraTextBox.Text = consulta.FechaHora.ToString("H:mm tt");
        DetalleTextBox.Text = consulta.Detalle;
        AgregarButton.Visible = false;
        ActualizarButton.Visible = true;
        ImprimirButton.Visible = true;
    }

    private void CargarCombos()
    {
        DataTable dt = vet.listarMedicos();
        dt.Columns.Add("fullName", typeof(string), "nombre + ' ' + apellidos");
        NombreMedicoDropDownList.DataSource = dt;
        NombreMedicoDropDownList.DataTextField = "fullName";
        NombreMedicoDropDownList.DataValueField = "nro_colegiado";
        NombreMedicoDropDownList.DataBind();

        AnimalDropDownList.DataSource = vet.listarAnimal();
        AnimalDropDownList.DataTextField = "nombre";
        AnimalDropDownList.DataValueField = "animalID";
        AnimalDropDownList.DataBind();
    }

    protected void AgregarButton_Click(object sender, EventArgs e)
    {
        CultureInfo esES = new CultureInfo("es-CR");
        int animalID = int.Parse(AnimalDropDownList.SelectedValue);
        int numColegiado = int.Parse(NombreMedicoDropDownList.SelectedValue);
        string fechaString = FechaTextBox.Text.Trim();
        string horaString = HoraTextBox.Text.Replace("am", ":00 a.m.").Replace("pm", ":00 p.m.").Trim();
        DateTime fechaFinal = new DateTime();

        string valorAConvertirInicio = fechaString + " " + horaString;
        DateTime fecha;
        bool result = DateTime.TryParseExact(valorAConvertirInicio, _formatoFechaHora, esES,
        System.Globalization.DateTimeStyles.None, out fecha);
        if (result)
            fechaFinal = fecha;

        string detalle = DetalleTextBox.Text;

        try
        {
            vet.agregarConsultaMedica(animalID, numColegiado, fechaFinal, detalle); 
            LimpiarCampos();
            string message = "alert('Consulta creada con éxito')";
            ScriptManager.RegisterClientScriptBlock((sender as Control), this.GetType(), "alert", message, true);
           
        }
        catch
        {
            string message = "alert('Hubo un error al insertar, intente más luego')";
            ScriptManager.RegisterClientScriptBlock((sender as Control), this.GetType(), "alert", message, true);
        }
    }

    private void LimpiarCampos()
    {
        AnimalDropDownList.SelectedValue=NombreMedicoDropDownList.SelectedValue="1";
         FechaTextBox.Text= HoraTextBox.Text=string.Empty;
    }

    protected void ActualizarButton_Click(object sender, EventArgs e)
    {
        CultureInfo esES = new CultureInfo("es-CR");
        int idConsulta = Convert.ToInt32(IdConsultaHiddenField.Value);
        int animalID = int.Parse(AnimalDropDownList.SelectedValue);
        int numColegiado = int.Parse(NombreMedicoDropDownList.SelectedValue);
        string fechaString = FechaTextBox.Text.Trim();
        string horaString = HoraTextBox.Text.Replace("am", ":00 a.m.").Replace("pm", ":00 p.m.").Trim();

        DateTime fechaFinal = new DateTime();

        string valorAConvertirInicio = fechaString + " " + horaString;
        DateTime fecha;
        bool result = DateTime.TryParseExact(valorAConvertirInicio, _formatoFechaHora, esES,
        System.Globalization.DateTimeStyles.None, out fecha);
        if (result)
            fechaFinal = fecha;

        string detalle = DetalleTextBox.Text;

        try
        {
            vet.actualizarConsultaMedica(idConsulta, animalID, numColegiado, fecha, detalle);
            LimpiarCampos();
            string message = "alert('Consulta actualizada con éxito')";
            ScriptManager.RegisterClientScriptBlock((sender as Control), this.GetType(), "alert", message, true);
        }
        catch
        {
            string message = "alert('Hubo un error al actualizar, intente más luego')";
            ScriptManager.RegisterClientScriptBlock((sender as Control), this.GetType(), "alert", message, true);
        }
    }
    protected void ImprimirButton_Click(object sender, EventArgs e)
    {
        Session["parametro"] = Request["idCita"];
        Session["nombreReporte"] = "ConsultaMedica.rpt";
        Session["URL"] = "ConsultaMedica.aspx?idCita="+Request["idCita"];
        Response.Redirect("ReporteadorCitas.aspx");
    }
}